package dsnmp

import (
	"fmt"
	"github.com/gosnmp/gosnmp"
	"time"
)

type Dsnmp struct {
	client *gosnmp.GoSNMP
}

// 獲取oid的所有值，轉換成字符串數組
func (d Dsnmp) GetALLByOid(oid string) ([]interface{}, error) {
	// 获取SNMP响应
	err := d.client.Connect()
	if err != nil {
		fmt.Printf("Connect() err: %v", err)
		return nil, err
	}
	defer d.client.Conn.Close()
	all, err := d.client.WalkAll(oid)
	if err != nil {
		fmt.Printf("WalkAll() err: %v", err)
		return nil, err
	}
	var result []interface{}
	for _, pdu := range all {
		result = append(result, pdu.Value)
	}
	return result, nil

}
func NewDsnmpV2c(ip string, port int, timeout int, community string) *Dsnmp {
	return &Dsnmp{
		client: &gosnmp.GoSNMP{
			Target:    ip,           // 替换为你的SNMP代理IP
			Port:      uint16(port), // 默认SNMP端口
			Timeout:   time.Duration(timeout) * time.Second,
			Version:   gosnmp.Version2c, // 使用SNMP版本2c
			Community: community,        // 使用默认的公共社区名
		},
	}

}

//func test() {
//	// 创建SNMP客户端实例
//	snmp := gosnmp.GoSNMP{
//		Target:    "10.104.55.11", // 替换为你的SNMP代理IP
//		Port:      161,            // 默认SNMP端口
//		Timeout:   time.Duration(2) * time.Second,
//		Version:   gosnmp.Version2c, // 使用SNMP版本2c
//		Community: "Jmzb_2019",      // 使用默认的公共社区名
//	}
//	sysDescrOid := "1.3.6.1.4.1.2011.2.251.36.5.22.1.1.3"
//	// 获取SNMP响应
//	err := snmp.Connect()
//	if err != nil {
//		fmt.Printf("Connect() err: %v", err)
//		return
//	}
//	defer snmp.Conn.Close()
//	// 变量用于存储OID对应的值
//	//sysDescrVarible := gosnmp.SnmpPDU{}
//	// 获取OID对应的值
//	all, err := snmp.WalkAll(sysDescrOid)
//	if err != nil {
//		fmt.Printf("WalkAll() err: %v", err)
//		return
//	}
//	for _, pdu := range all {
//		fmt.Printf("System Description: %s\n", pdu.Value)
//
//	}

// 打印获取到的值
//}
